// 数字统计

#include <iostream>
using namespace std;

int main() {
    int l, r;
    cin >> l >> r;
    int ret = 0;
    if(l > r)
    {
        cout << ret << endl;
        return 0;
    }
    
    for(int i = l; i <= r; i++)
    {
        int tmp = i;
        while(tmp)
        {
            if(tmp %10 == 2)
                ret++;
            tmp /= 10;
        }
    }
    cout << ret << endl;
    return 0;
}

// 两个数组的交集

class Solution {
    public:
        vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
            unordered_set<int> hash;
            vector<int> ret;
            for(int x : nums1)
                hash.insert(x);
            for(int x : nums2)
                if(hash.count(x))
                {
                    ret.push_back(x);
                    hash.erase(x);
                }
            return ret;
        }
    };


// 点击消除
#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    string st;
    cin >> str;
    for(auto ch : str)
    {
        if(st.empty() || st.back() != ch)
            st.push_back(ch);
        else
            st.pop_back();
    }
    cout << (st.empty() ? "0" : st) << endl;
    return 0;
}

// 牛牛的快递
#include <iostream>
#include <cmath>
#include <ostream>
using namespace std;

int main() {
    float a;
    char b;
    int sum = 20;
    cin >> a >> b;
    if(a > 1)
    {
        a -= 1;
        sum += ceil(a);
    }
    if(b == 'y')
        sum += 5;
    cout << sum << endl;
    return 0;
}


// 最小花费爬楼梯
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n = 0;
    cin >> n;
    vector<int> cost(n + 1);
    for(int i = 0; i < n; i++)
        cin >> cost[i];
    if(n == 1)
        cout << cost[0] << endl;
    else if(n == 2)
        cout << min(cost[0], cost[1]) << endl;
    else
    {
        vector<int> dp(n + 1);
        for(int i = 2; i <= n; i++)
            dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
        cout << dp[n] << endl;
    }
    return 0;
}